﻿#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

//5.给结构体加上一行代码，则占用内存字节就变成5个了；
#pragma pack(1)
struct Man
{
	char a;//1
	int b;//4
};
//14.数组作为函数参数会退化为，指向数组首元素的指针；即为4个字节；
int calculateArraySize(int arr[])
{
	return sizeof(arr);
}


//3.sizeof返回的是变量实际所占用空间的大小，单位是字节；
void testSizeof()
{
	printf("1.int类型的字节size大小为：%d\n", sizeof(int));//4
	double a = 3.14;
	printf("2.double类型的变量a字节size大小为：%d\n", sizeof a);//8

	//printf("4.结构体Man在内存对齐情况下，占用的字节大小为：%d\n", sizeof(struct Man));//8
	printf("6.结构体Man加上#pragma pack(1)情况下，占用的字节大小为：%d\n", sizeof(struct Man));//5

	unsigned int b = 10;
	if (b - 20 > 0)
	{
		printf("7.无符号int类型变量b-20大于0；\n");//大于0
	}
	else
	{
		printf("8.无符号int类型变量b-20小于0；\n");
	}

	//9.sizeof返回结果是unsigned int，与int类型变量进行操作时，结果仍然是unsigned int类型，大于0；
	if (sizeof(int) - 5 > 0)
	{
		printf("10.sizeof(int)-5的结果大于0；\n");//大于0
	}
	else {
		printf("11.sizeof(int)-5的结果小于0；\n");
	}

	//13.sizeof计算数组；
	int arr[] = { 1,2,3,4,5,6,7 };
	printf("12.数组arr的字节size大小为：%d\n", sizeof(arr));//28

	printf("15.使用自定义函数calculateArraySize(arr)求数组arr的字节size大小为：%d\n", calculateArraySize(arr));//4
}

//main179：sizeof的用法
int main179()
{
	testSizeof();//7.无符号int类型变量b-20大于0；

	system("pause");
	return EXIT_SUCCESS;
}